﻿using System;
using System.Collections;
using System.Linq;
using System.Web;
using System.Web.Services;
using System.Web.Services.Protocols;
using System.Xml.Linq;
using System.Web.Script.Services;
using DotNetNuke.Entities.Users;

namespace SilverlightDesktop.Module
{
    [WebService(Namespace = "http://SilverlightDesktop.net/")]
    [WebServiceBinding(ConformsTo = WsiProfiles.BasicProfile1_1)]
    [ScriptService()]
    public class SilverlightNotepadWebService : System.Web.Services.WebService
    {
        #region GetNotepadContents
        [WebMethod(Description = "GetNotepadContents")]
        [ScriptMethod()]
        public String GetNotepadContents(int PortalID, int ModuleId, int UserID, string Password)
        {
            string NotepadContents = "";
            string strIPAddress = this.Context.Request.UserHostAddress;
            SilverlightDesktopAuthendicationHeader SilverlightDesktopAuthendicationHeader =
                new SilverlightDesktopAuthendicationHeader();
            SilverlightDesktopAuthendicationHeader.PortalID = PortalID;
            SilverlightDesktopAuthendicationHeader.UserID = UserID;
            SilverlightDesktopAuthendicationHeader.Password = Password;
            SilverlightDesktopAuthendicationHeader.ModuleId = ModuleId;
            SilverlightDesktopAuthendicationHeader.IPAddress = strIPAddress;

            Authendication Authendication = new Authendication(SilverlightDesktopAuthendicationHeader);

            SilverlightNotepadDataContext SilverlightNotepadDataContext = new SilverlightNotepadDataContext();

            if (Authendication.IsUserValid("Silverlight Notepad"))
            {
                UserInfo objUser = Authendication.GetUserInfo();

                var objSilverlightNotepad = (from SilverlightNote in SilverlightNotepadDataContext.SilverlightNotepads
                                             where SilverlightNote.UserName == objUser.Username
                                             select SilverlightNote).FirstOrDefault();

                if (!(objSilverlightNotepad == null))
                {
                NotepadContents = objSilverlightNotepad.Note;
		}
            }
            else
            {
                NotepadContents = "Must be logged in";
            }

            return NotepadContents;
        }
        #endregion

        #region SaveNotepadContents
        [WebMethod(Description = "SaveNotepadContents")]
        [ScriptMethod()]
        public void SaveNotepadContents(int PortalID, int ModuleId, int UserID, string Password, string NotepadContents)
        {
            string strIPAddress = this.Context.Request.UserHostAddress;
            SilverlightDesktopAuthendicationHeader SilverlightDesktopAuthendicationHeader =
                new SilverlightDesktopAuthendicationHeader();
            SilverlightDesktopAuthendicationHeader.PortalID = PortalID;
            SilverlightDesktopAuthendicationHeader.UserID = UserID;
            SilverlightDesktopAuthendicationHeader.Password = Password;
            SilverlightDesktopAuthendicationHeader.ModuleId = ModuleId;
            SilverlightDesktopAuthendicationHeader.IPAddress = strIPAddress;

            Authendication Authendication = new Authendication(SilverlightDesktopAuthendicationHeader);

            SilverlightNotepadDataContext SilverlightNotepadDataContext = new SilverlightNotepadDataContext();

            if (Authendication.IsUserValid("Silverlight Notepad"))
            {
                UserInfo objUser = Authendication.GetUserInfo();

                var objSilverlightNotepad = (from SilverlightNote in SilverlightNotepadDataContext.SilverlightNotepads
                                             where SilverlightNote.UserName == objUser.Username
                                             select SilverlightNote).FirstOrDefault();

                if (!(objSilverlightNotepad == null))
                {
                    SilverlightNotepadDataContext.SilverlightNotepads.DeleteOnSubmit(objSilverlightNotepad);
                    SilverlightNotepadDataContext.SubmitChanges();
                }

                SilverlightNotepad SilverlightNotepad = new SilverlightNotepad();
                SilverlightNotepad.UserName = objUser.Username;
                SilverlightNotepad.IPAddress = strIPAddress;
                SilverlightNotepad.Note = TrimLarge(NotepadContents);

                SilverlightNotepadDataContext.SilverlightNotepads.InsertOnSubmit(SilverlightNotepad);
                SilverlightNotepadDataContext.SubmitChanges();
            }
        }
        #endregion

        #region TrimLarge
        private string TrimLarge(string strText)
        {
            string strNewText;

            if (strText.Length > 99)
            {
                strNewText = strText.Substring(0, 99);
            }
            else
            {
                strNewText = strText;
            }
            return strNewText;
        }
        #endregion
    }
}